var debug = true;

// socket module
var net = require('net');
var port = 18000;

// messagepack module
var notepack = require('notepack.io');

// message decoder manager
var protoMan = require('./network/protoMan');

var clients = [];

///////////////////////////////////////////////////
//开始创建和运行服务器
///////////////////////////////////////////////////
server = net.createServer(function (sock) {
    sock.on('data', function(data) {
       var message = notepack.decode(data);
       if (protoMan.process(sock, clients, message)) {
       } else {
           console.log('Invalid message from client, not a valid type.');
       }
    }); 
});

server.listen(port, function() { console.log('Serve service at port: ' + port); });

server.on('connection', function(sock) {
    console.log('侦听到一个连接 ');
    sock.name = sock.remoteAddress + ':' + sock.remotePort;
    console.log(sock.name);
    clients[sock.name] = sock;
});

server.on('close', function() {
    console.log('receive close from client');
});

server.ProtoMan = protoMan;
server.Notepack = notepack;
server.Debug = debug;

//////////////////////////////////////////////////////////
//装载逻辑模块，所有的服务器的自定义逻辑都在这个文件里注册
//注意：必须在以上server的ProtoMan、Notepack都准备
//好后才能装载这个模块
//////////////////////////////////////////////////////////
require('./modules');
